Method and apparatus for intelligent temperature control

ABSTRACT

Various ways to control the ambient temperature of a room in a structure are described. In one embodiment, a method for intelligently controlling an ambient room temperature in a structure is described, comprising receiving a future outdoor temperature forecast related to a geographic area where the structure is located, and altering a temperature profile for controlling the ambient room temperature based on the future outdoor temperature forecast.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a divisional of U.S. patent application Ser. No.15/859,573 filed on Dec. 31, 2017.

BACKGROUND I. Field of Use

The present application relates generally to the heating, ventilationand air conditioning arts. More specifically, embodiments of the presentinvention relate to intelligent temperature control of rooms inside ofstructures.

II. Description of the Related Art

Thermostats have been used for decades to control room temperaturesbased on user settings and temperature sensors commonly built into thethermostats. Thermostats typically control heating and/or coolingequipment by turning the equipment on or off. For example, when a roomtemperature where a thermostat is located drops below a setpoint, thethermostat sends a signal to heating equipment to begin heating theroom. When the setpoint has been achieved or exceeded, the thermostatsends another signal to the heating equipment to turn off.

As digital electronics and microprocessors became widespread,thermostats became capable of being programmed with multiple setpoints,each setpoint related to a particular time of day. So, users couldautomatically control room temperature at different times of the day,for instance, when waking, leaving for work, returning from work andgoing to bed.

Recently, thermostat manufacturers have added a capability to learn thehabits of occupants, and to automatically adjust setpoint temperaturesand times based on past habits They are typically based on a machinelearning algorithm: for the first weeks users generally have to regulatethe thermostat in order to provide a reference data set. Then, thethermostat can learn occupants' schedules, at which temperature they areused to and when. Using built-in sensors and phones' locations, it canshift into energy saving mode when it realizes nobody is at home.

While these new class of thermostats are far more advanced and offermany more features than their predecessors, they make decisions based onpast data only.

It would be desirable for thermostats to better control roomtemperatures.

SUMMARY

Embodiments of the present invention are directed towards intelligentways to control ambient room temperatures. In one embodiment, a methodfor intelligently controlling an ambient room temperature in a structureis described, comprising receiving a future outdoor temperature forecastrelated to a geographic area where the structure is located, andaltering a temperature profile for controlling the ambient roomtemperature based on the future outdoor temperature forecast.

In another embodiment, a method is described for intelligentlycontrolling an ambient room temperature in a structure, comprising,receiving a current outdoor temperature reading related to a geographicarea where the structure is located, and altering a heating ramp starttime when the current temperature is less than a predeterminedthreshold.

In yet another embodiment, a device for intelligently controlling anambient room temperature in a structure is described, comprising anetwork interface, a memory for storing processor-executableinstructions and a temperature profile comprising one or moretemperature setpoints and temperature setpoint times, and a processorcoupled to the network interface and the memory, for executing theprocessor-executable instructions that causes the device to receive, bythe processor via the network interface, a future outdoor temperatureforecast related to a geographic area where the structure is located,and alter at least one of the temperature setpoint times based on thefuture outdoor temperature forecast.

In yet still another embodiment, for intelligently controlling anambient room temperature in a structure is described, comprising anetwork interface, a memory for storing processor-executableinstructions and a temperature profile comprising one or moretemperature setpoints and temperature setpoint times, and a processorcoupled to the network interface and the memory, for executing theprocessor-executable instructions that causes the device to receive acurrent outdoor temperature reading related to a geographic area wherethe structure is located, and alter a heating ramp start time when thecurrent temperature is less than a predetermined threshold.

BRIEF DESCRIPTION OF THE DRAWINGS

The features, advantages, and objects of the present invention willbecome more apparent from the detailed description as set forth below,when taken in conjunction with the drawings in which like referencedcharacters identify correspondingly throughout, and wherein:

FIG. 1 is a top, plan view of a structure utilizing the inventiveconcepts discussed herein;

FIG. 2 is a functional block diagram of one embodiment of a thermostator, alternatively, a server, as shown in FIG. 1 ;

FIG. 3 is a flow diagram of one embodiment of a method, performed byeither the thermostat or the server as shown in FIGS. 1 and 2 , forintelligently controlling an ambient room temperature in a structure;and

FIG. 4 is a flow diagram of another embodiment of a method, performed byeither the thermostat or the server as shown in FIGS. 1 and 2 , forintelligently controlling an ambient room temperature in a structure.

DETAILED DESCRIPTION

Embodiments of the present invention are directed towards a system,device and method to control ambient room temperatures. Ambienttemperature control is enhanced using future temperature forecasts for ageographic area where a structure is located. The enhanced temperaturecontrol can be further refined by compiling a history of roomtemperatures vs. temperature settings, and determining heating/coolingeffects when one or more doors or windows are open. Also described areseveral novel ways that thermostats can be configured to communicatewith users under certain hostile conditions. Further discussion hereinrelates to providing access to thermostats, for example in hotel roomsettings.

FIG. 1 is a top, plan view of a structure 100 utilizing the inventiveconcepts discussed herein. In this embodiment, structure 100 comprises amulti-room, single-story residence having a heating system 102, acooling system 104 and a thermostat 106 that controls heating system 102and cooling system 104. Structure 100 also comprises at least one entrydoor 108 and one window 110. Thermostat 106 comprises a temperaturesensor that senses the ambient temperature of the room where thermostat106 is located. In some embodiments, thermostat may be configured toreceive two or more temperature sensor inputs from temperature sensorslocated in other parts of structure 100.

Like prior art thermostats, thermostat 106 receives temperature profilesfrom users in the form of desired temperature setpoints and times whenthese setpoints should be achieved. For example, a user may setthermostat 106 to warm the room where thermostat 106 is located to anambient temperature of 74 degrees Fahrenheit at 7 am when the usertypically wakes, to maintain a temperature of no less than 62 degrees at8:30 am when the user leaves structure 100 to go to work, to set theroom temperature to 74 degrees Fahrenheit at 6 pm when the user returnsfrom work, and to maintain a room temperature of no less than 60 degreesFahrenheit at 10 pm when the user typically goes to bed. As each of thetimes set by the user in the temperature profile near, thermostat 106sends signals to heating system 102 or cooling system 104 to begin orstop heating or cooling, depending on the temperature setpoint for eachsetpoint time (i.e., waking, leaving, returning, retiring) and theambient air temperature in the room where thermostat 106 is located.

To achieve the temperature setpoints at the times specified in thetemperature profile, thermostat 106 typically begins heating or coolingbefore the set time for each temperature setpoint. In this way, thedesired room temperature will be achieved at the time desired by theuser. This is known in the art as “thermal ramping” or simply,“ramping”. Prior art thermostats may be pre-programmed to begin rampinga predetermined, fixed time period before each setpoint time, such as 15minutes or 30 minutes. However, thermostat 106 calculates one or moreramp times for one or more setpoints, respectively, using future outdoortemperature forecasts, results from previous ramping efforts, anddetection of open doors and/or windows.

In one embodiment, thermostat 106 is coupled to weather forecast server112 via a local area network 114, such as a home Wi-Fi router and modem,and a wide-area network 116, such as the Internet. Thermostat 106 may beprovided with current and future weather information in a geographicarea where structure 100 is located. Such future current and futureweather information may comprise current and future outdoor temperatureforecasts, precipitation predictions, wind speed and direction, cloudcoverage, and other current and future weather-related information.Thermostat 106 may be programmed by a user with information pertainingto the thermostat's location, typically by entry of a city and state, orthe location may be determined by the weather forecast server 112 basedon an IP address assigned to thermostat 106. In any case, weatherforecast server 112 provides current and future weather information tothermostat 106 upon request from thermostat 106, for example atpredetermined time intervals, or on a “push” basis as updates becomeavailable from weather forecast server 112.

Thermostat 106 may use the current and future weather information tocalculate custom ramp times for one or more setpoints. For example, ifthe local outdoor temperatures are expected to cool significantly overthe next 24 hours, thermostat 106 may create or modify a ramp time whena heating cycle begins the following morning, by beginning a heatingcycle earlier than normal. If a warming trend will be occurring in thenext several days, thermostat 106 may begin a heating cycle later thannormal, or begin a cooling cycle earlier than normal.

In one embodiment, thermostat 106 uses future weather information inconjunction with past heating and cooling cycle information to determinea custom ramp time. Thermostat 106 may store previous heating andcooling information, such as setpoints, heat/cool ramp start times,resultant room temperature(s) and outdoor temperature information duringthe ramps to determine a relationship between room temperatures, outdoortemperatures, desired room temperatures and the time it takes to ramp tosuch desired room temperatures. This is explained in greater detaillater herein.

In another embodiment, thermostat 106 may utilize current and futureweather information, and/or past heating and cooling cycle information,and/or door and/or window status information to determine custom ramptimes. In this embodiment, a status of one or more doors and/or windowsis provided to thermostat 106, either directly via wireless sensors thatmonitor doors or windows in structure 100, or via a home security panel118. The status of each door or window comprises either “open” or“closed”. In some embodiments, an amount that a door or a window is openmay also be provided, such as “18 inches”, or “3 feet, 6 inches” inembodiments where such detailed status information is provided by thesensors. Thermostat 106 may record resultant room temperatures duringthermal ramping and additionally record the status of one or more doorsor windows. Such door and/or window status information may skew the timeneeded to achieve setpoints. For example, if the outdoor temperature is30 degrees, and the indoor room temperature is 60 degrees, and a desiredroom temperature at 7 am is 72 degrees, a standard ramp time may bedetermined to be 40 minutes. However, if a window is open, cold air fromoutside will enter through the open window and hamper the heatingsystem's effort to bring the room to the desired temperature within thestandard 40 minute ramp time. In this case, thermostat 106 tracks theroom temperature during the ramp, and stores certain parameters from theramp, such as how long it actually took to achieve the desiredtemperature, based on the outdoor temperature, the starting roomtemperature, the desired room temperature and the fact that one windowwas open. Then, the next time that similar circumstances present, i.e.,the same or similar outdoor temperature, one window open, starting roomtemperature, and desired room temperature, thermostat 106 may alter theramp time, increasing it to 50 minutes, in order to achieve the desiredroom temperature at the desired setpoint time.

In one embodiment, the calculations performed by thermostat 106 todetermine custom ramp times may be performed by some other device orsystem, such as server 120. Server 120 may be coupled to thermostat 106via wide-area network 116 and local-area network 114 and receive certaininformation from thermostat 107, such as current room temperatures,temperature profiles, occupancy information, and door/window statusinformation. Server 120 may also be coupled to weather forecast server112 to receive current and future weather information, in order to usesuch information to better control the heating and cooling of structure100, as described previously.

FIG. 2 is a functional block diagram of one embodiment of thermostat 106or server 120. FIG. 2 shows processor 200, memory 202, network interface204, user interface 206 and temperature sensor 208. It should beunderstood that in some embodiments, some functionality has been omittedfor purposes of clarity, such as a power supply.

Processor 200 comprises one or more general-purpose microprocessors,microcontrollers and/or custom or semi-custom ASICs, and/or discretecomponents able to carry out the functionality required for operation ofthermostat 106. Processor 200 may be selected based on processingcapabilities, power-consumption properties, and/or cost and sizeconsiderations. In the case of a microprocessor, microcontroller, orASIC, processor 200 generally executes processor-executable instructionsstored in memory 202 that control the functionality of the intelligentpersonal assistant. Examples of memory include one or more electronicmemories such as RAM, ROM, hard drives, flash memory, EEPROMs, UVPROMs,etc. or virtually any other type of electronic, optical, or mechanicalmemory device, but excludes propagated signals. In some embodiments,memory 202 may be incorporated into processor 200, such as in the caseof a microcontroller having a certain amount of onboard static RAM,flash memory, or some other electronic memory capable of storing theprocessor-executable instructions and variable information, such astemperature profiles, current and future weather information,door/window status information, past ramping historical information(i.e., previous ramp information and the conditions that produced theprevious ramp information, such as indoor/outdoor temperatures,door/window status, occupancy information, etc.).

Network interface 204 comprises circuitry necessary to transmit andreceive information to and from other devices, such as security panel118, weather forecast server 112, door/window sensors, server 120, andto user interface device 122 (user interface device comprising a smartphone, tablet computer, desktop computer, laptop computer, or otherpersonal data device executing an “app” for controlling thermostat 106,for entering temperature profile information, etc.). Such circuitry iswell known in the art and may comprise one or more of BlueTooth, Wi-Fi,or RF circuitry, among others.

User interface 206 comprises one or more keys, buttons, switches,touchpads, touchscreens, or other devices that allows a user to operatethermostat 106, and to enter information that may be used by thermostat106, such as a location of structure 100, a square footage of structure100, an age of structure 100, a number of stories that structure 100has, etc.

Temperature sensor 208 comprises a device that provides electronicsignals to processor 200 in accordance with the ambient air temperaturesurrounding thermostat 106. In some embodiments, temperature sensor 208is not used, and thermostat 106 receives temperature readings from oneor more temperature sensors located in one or more locations ofstructure 100. Temperature sensor 208 may comprise one of a thermistor,a resistive temperature detector, a thermocouple, semiconductor-typedevices, or other temperature sensors known in the art.

FIG. 3 is a flow diagram of one embodiment of a method, performed bythermostat 106, for intelligently controlling an ambient roomtemperature in a structure. It should be understood that the stepsdescribed in this method could be performed in an order other than whatis shown and discussed and that some minor method steps may have beenomitted for clarity and simplicity. It should also be understood thatthe functionality described in this method may be performed by athermostat or by a server remotely located from a structure, where oneor more room temperatures of the structure are provided to the sever vialocal area network 114 and wide-area network 116, and signals to controloperation of heating system 102 and/or cooling system 104 may beprovided from the server to theses systems, again via wide-area network116 and local area network 114.

At block 300, thermostat 106 receives a temperature profile from a user,either via user interface 204 or user interface device 122. Thetemperature profile comprises one or more desired room temperatures inconnection with times that the user would like to achieve the desiredroom temperatures. A commonly-used temperature profile allows a user toset several desired temperatures at various times during the day, suchas a wake time, a leave time, an arrive time, and a sleep time.Processor 200 receives the temperature profile and stores it in memory202.

At block 302, processor 200 may receive current weather conditions fromweather forecast server 112. In another embodiment, current weatherconditions may be received from a local temperature sensor installedoutside of structure 100 and in communication with local-area network114. In any case, processor 200 receives current weather conditions andtypically stores the current weather conditions in memory 202. Suchcurrent weather conditions comprise temperature, barometric pressure,wind direction and/or speed, precipitation indications, and/or cloudcoverage indications.

At block 304, processor 200 may calculate one or more temperature rampsettings in connection with one or more of temperature setpoints andsetpoint times stored in the temperature profile in memory 202. In oneembodiment, the ramp settings are programmed as default values intomemory 202. For example, a temperature ramp start time may be set to 15minutes, which means that processor 200 will begin a heating cycle or acooling cycle, as the case may be, 15 minutes before any temperaturesetpoint time. Starting a heating or cooling cycle comprises processor200 sending a start or stop command to heating system 102 or coolingsystem 104, to instruct heating system 102 or cooling system 104 tostart or stop heating or cooling one or more rooms within structure 100.

At block 306, processor 200 may receive future weather forecasts fromweather forecast server 112. Such future weather forecasts may comprisepredicted temperatures barometric pressures, wind directions and/orspeed, precipitation indications, and/or cloud coverage indications.Such future weather information may be provided as an hourly or dailyforecast, extending into the future a number of days, such as ten days.For each time period (hour or day), predicted weather information may beprovided by weather forecast server 112, as weather predictions aregenerated by weather forecast server 112. In one embodiment, one or moreweather prediction updates are provided to processor 200 atpredetermined time intervals, such as one hour or one day. In otherembodiment, weather predictions are provided to processor 200 uponprocessor 200 requesting such weather prediction information from server112 at predetermined time intervals, or upon the occurrence of apredetermined event, such as a user requesting an update via userinterface 206 or device 122.

At block 308, processor 200 may calculate one or more temperature rampsettings in connection with one or more of the temperature setpointsstored in the temperature profile in memory 202, considering the futureweather forecast information provided by weather forecast server 112.For example, if the temperature profile stored in memory 202 indicatesthat the interior of structure 100 should be at 72 degrees at 7 am eachmorning, processor 200 may calculate a start time when either heatingsystem 102 or cooling system 104 should be activated in order to achievethe desired morning temperature setting of 72 degrees by the desiredtime of 7 am.

In one embodiment, a default ramp start time is stored in memory 202,such as 15 minutes. The default ramp start time may be stored in memory202 during manufacturing of thermostat 106, or it may be programmed by auser. The default ramp start time is intended to achieve the desiredtemperature set point within the default ramp start time. However, thedefault ramp start time may not achieve the desired temperate settingwithin the ramp time when the temperature inside structure 100 issignificantly different than the desired temperature set point. Othertimes, the desired temperature is achieved prior to the desired setpointtime, for example, when the ambient temperature inside structure 100 isclose to the desired temperature setpoint. Processor 200 may alter thedefault ramp start time to begin sooner or later than the default rampstart time, depending on the future weather forecasts received fromweather forecast server 112.

For example, processor 200 may receive a future weather forecastextending 7 days into the future, indicating that a warming trend willoccur over the 7 day period, with local morning temperatures forecast tobe 76 degrees on the first day of the forecast, and warming each day by2 degrees. A stored profile indicates that the air temperature withinstructure 100 should be 72 degrees at 8 am each day. Normally,thermostat 106 would send a command to cooling system 106 to begincooling 15 minutes before 8 am. However, processor 200 knows that thewarming trend is approaching. In response, processor 200 may alter thedefault ramp start time for the following day, or for two or more of the7 days in the forecast, to account for the warming temperatures outsidestructure 100 which may affect the indoor temperatures as well. Forexample, for every degree difference between a forecasted temperatureand a baseline temperature, processor 200 may alter the ramp start timeby 10 minutes. The baseline temperature could be preprogrammed intothermostat 106, be based on a present day's temperature readings, or bebased on an average of temperatures over a given time period. An averagebaseline temperature for various times during the day may be provided toprocessor 200 either by weather forecast server 112 or by processor 200storing reported outdoor temperatures in memory 202 and calculating anaverage for various times throughout the day and/or evening based on theprevious, reported temperatures.

Returning to the example, on the morning of the first day of theforecast, i.e., the morning after processor 200 receives the futureweather forecast from weather forecast server 112, processor mayincrease the ramp start time, increasing it from the default of 15minutes, to 25 minutes, based on the 10 minute adjustment time perdegree stored in memory 202. Thus, cooling system 106 will begin coolingthe interior of structure 100 25 minutes before 7 am, rather than thedefault of 15 minutes.

When the future weather forecast indicates that local outdoortemperatures will be moderate, or near the desired setpoint(s),processor 200 may decrease the ramp start time, as less time willgenerally be needed to achieve the desired temperature set point(s).

Of course, for a cooling trend, similar calculations may be performed,increasing the ramp start time when the future weather forecastindicates that cooling temperatures are approaching, and decreasing rampstart times when the local outdoor temperatures are forecast to be onlyslightly cooler than desired temperature setpoints.

At block 310, processor 200 may determine how well the adjusted rampstart times are achieving the desired temperature setpoints at thedesired setpoint times. This is accomplished by processor 200 storingone or more actual indoor temperatures, as provided by sensor 208 and/orother sensors, in memory 202 during a ramp period. In one embodiment, atemperature is recorded as a setpoint time is reached. Processor 200 cancompare the actual temperatures measured at the setpoint times to thedesired temperatures at the setpoint times and determine a divergencetherebetween. If little or no divergence is calculated, the adjustmentto the ramp start time is deemed by processor 200 to be accurate.However, if the divergence varies more than a predetermined amount, suchas by 2 degrees, processor 200 may further adjust the ramp start time inaccordance with the divergence amount. For example, for every degree ofdivergence, processor 200 may increase the ramp start time by 5 minutes,or some other predetermined value.

FIG. 4 is a flow diagram of one embodiment of a method, performed bythermostat 106, for intelligently controlling an ambient roomtemperature in a structure. It should be understood that the stepsdescribed in this method could be performed in an order other than whatis shown and discussed and that some minor method steps may have beenomitted for clarity and simplicity. It should also be clear that themethod described in FIG. 4 may be processed in conjunction with themethod of FIG. 3 .

At block 400, thermostat 106 receives a temperature profile from a user,either via user interface 204 or user interface device 122. Thetemperature profile comprises one or more desired room temperatures inconnection with times that the user would like to achieve the desiredroom temperatures. A commonly-used temperature profile allows a user toset several desired temperatures at various times during the day, suchas a wake time, a leave time, an arrive time, and a sleep time.Processor 200 receives the temperature profile and stores it in memory202.

At block 402, processor 200 may calculate one or more temperature rampsettings in connection with one or more of temperature setpoints andsetpoint times stored in the temperature profile in memory 202. In oneembodiment, the ramp settings are programmed as default values intomemory 202. For example, a temperature ramp start time may be set to 15minutes, which means that processor 200 will begin a heating cycle or acooling cycle, as the case may be, 15 minutes before any temperaturesetpoint time. Starting a heating or cooling cycle comprises processor200 sending a start or stop command to heating system 102 or coolingsystem 104, to instruct heating system 102 or cooling system 104 tostart or stop heating or cooling one or more rooms within structure 100.

At block 404, processor 200 may receive current weather conditions fromweather forecast server 112. In another embodiment, current weatherconditions may be received from a local temperature sensor installedoutside of structure 100 and in communication with local-area network114. In any case, processor 200 receives current weather conditions andtypically stores the current weather conditions in memory 202. Suchcurrent weather conditions comprise temperature, barometric pressure,wind direction and/or speed, precipitation indications, and/or cloudcoverage indications.

At block 406, processor 200 may receive future weather forecasts fromweather forecast server 112. Such future weather forecasts may comprisepredicted temperatures barometric pressures, wind directions and/orspeed, precipitation indications, and/or cloud coverage indications.Such future weather information may be provided as an hourly or dailyforecast, extending into the future a number of days, such as ten days.For each time period (hour or day), predicted weather information may beprovided by weather forecast server 112, as weather predictions aregenerated by weather forecast server 112. In one embodiment, one or moreweather prediction updates are provided to processor 200 atpredetermined time intervals, such as one hour or one day. In otherembodiment, weather predictions are provided to processor 200 uponprocessor 200 requesting such weather prediction information from server112 at predetermined time intervals, or upon the occurrence of apredetermined event, such as a user requesting an update via userinterface 206 or device 122.

At block 408, processor 200 may begin comparing the local, outdoortemperatures from the current weather conditions to one or more indoortemperatures, as reported by one or more temperature sensors locatedwithin structure 100. In one embodiment, thermostat 106 comprises atemperature sensor that reports the ambient room temperature inproximity to thermostat 106 to processor 200. The temperaturecomparisons may be performed over a predetermined time period, such as aday, a week, a month, or more, or on a “rolling” basis, such over thepast day, week, month or other predetermined time period. Processor 200may use the comparisons to determine an insulation metric to predict howthe indoor temperature will be affected by outdoor temperatures.

For example, each day, thermostat 106 may record an average localoutdoor temperature of at 7 am, one of the setpoint times chosen by auser and stored in a temperature profile in memory 202. At the sametime, thermostat 106 may record an average indoor temperature of 66degrees, prior to the start of any heating or cooling for the morning,for example, taken 30 minutes prior to the setpoint time. In thisexample, the average indoor temperature is only 4 degrees higher thanthe average outdoor temperature. Thus, the insulation metric mayindicate that structure 100 is well-insulated, as opposed to, forexample, an outdoor/indoor temperature differential of 15 degrees, whichthe insulation metric may indicate that structure 100 is poorlyinsulated.

In one embodiment, thermostat 106 can receive insulation metrics fromother structures nearby structure 100 as a way to compare the relativeinsulating capabilities of nearby structures. Other information could becompared, such as a square footage of each structure, whether eachstructure is one or two stories, an age of each structure, etc. In thisway, thermostat 106 could provide relative insulation performanceinformation to a user inside structure 100 based on the insulationmetrics and other information of nearby structures. For example, 50other homes could report their insulation metrics, square footage,number of stories, and structure ages to server 120, each using athermostat similar to thermostat 106, and these metrics and informationcould be provided to thermostat 106 on the basis of a zip code, or othergeolocation information, where structure 100/thermostat 106 is located.Processor 200 may then compare the insulation metric of structure 100 tothese other metrics in accordance with the similarities of thestructures, such as square footage, stories and/or age. For example,processor 200 may cause user interface 206 to display a ranking ofstructure 100's insulation metric as compared to homes having the samenumber of stories and within 10% of the square footage of structure 100.This may help a homeowner determine that structure 100 is most likely inneed of additional insulation. In one embodiment, the relativeinsulation metric could be provided to device 122.

The methods or steps described in connection with the embodimentsdisclosed herein may be embodied directly in hardware or embodied inmachine-readable instructions executed by a processor, or a combinationof both. The machine-readable instructions may reside in RAM memory,flash memory, ROM memory, EPROM memory, EEPROM memory, registers, harddisk, a removable disk, a CD-ROM, or any other form of storage mediumknown in the art. An exemplary storage medium is coupled to theprocessor such that the processor can read information from, and writeinformation to, the storage medium. In the alternative, the storagemedium may be integral to the processor. The processor and the storagemedium may reside in an ASIC. In the alternative, the processor and thestorage medium may reside as discrete components.

Accordingly, an embodiment of the invention may comprise anon-transitory processor-readable media embodying code ormachine-readable instructions to implement the teachings, methods,processes, algorithms, steps and/or functions disclosed herein.

While the foregoing disclosure shows illustrative embodiments of theinvention, it should be noted that various changes and modificationscould be made herein without departing from the scope of the inventionas defined by the appended claims. The functions, steps and/or actionsof the method claims in accordance with the embodiments of the inventiondescribed herein need not be performed in any particular order.Furthermore, although elements of the invention may be described orclaimed in the singular, the plural is contemplated unless limitation tothe singular is explicitly stated.

I claim:
 1. A method for intelligently controlling an ambient roomtemperature in a structure, comprising: storing a user-defined setpointin a memory, the user-defined setpoint comprising a desired temperatureand a desired time when the desired temperature should be achieved;receiving a future outdoor forecast related to a geographic area wherethe structure is located; calculating a start time of a temperature rampbased on the future outdoor forecast, the desired temperature and thedesired time; storing the altered start time in the memory; and causingan HVAC system to begin heating or cooling the structure in accordancewith the altered start time.
 2. The method of claim 1, furthercomprising: monitoring a temperature of a room over a period of time;receiving outdoor temperature information over the period of time;comparing the temperature of the room to the outdoor temperature overthe period of time; and recalculating the altered start time based onthe comparison when the future outdoor forecast indicates that theoutdoor temperature will be more than a predetermined difference from abaseline temperature.
 3. The method of claim 1, further comprising:determining an actual time when the ambient room temperature reaches theadjusted desired temperature; determining a time difference between theactual time and the altered desired time; and recalculating the alteredstart time based on the time difference.
 4. The method of claim 3,wherein recalculating the altered start time comprises adjusting thealtered start time to a time earlier than the altered start time whenthe time difference indicates that the actual time was later than thealtered desired time.
 5. The method of claim 3, wherein recalculatingthe altered start time comprises adjusting the altered start time by apredetermined time for each time period that the actual time was laterthan the altered desired time.
 6. The method of claim 5, wherein thepredetermined time is 5 minutes and the time period is 5 minutes.
 7. Adevice for intelligently controlling an ambient room temperature in astructure, comprising: a network interface; a memory for storingprocessor-executable instructions and a user-defined setpoint, theuser-defined setpoint comprising a desired temperature and a desiredtime when the desired temperature should be achieved; and a processorcoupled to the network interface and the memory, for executing theprocessor-executable instructions that causes the processor to: receive,via the network interface, a future outdoor forecast related to ageographic area where the structure is located; calculate a start timeof a temperature ramp based on the future outdoor forecast, the desiredtemperature and the desired time; store the altered start time in thememory; and cause an HVAC system to begin heating or cooling thestructure in accordance with the altered start time.
 8. The device ofclaim 7, further comprising: a temperature sensor; wherein theprocessor-executable instructions further comprise instructions thatcauses the processor to: monitor, via the temperature sensor, atemperature of a room over a period of time; receive, via the networkinterface, outdoor temperature information over the period of time;compare the temperature of the room to the outdoor temperature over theperiod of time; and recalculate the altered start time based on thecomparison when the future outdoor forecast indicates that the outdoortemperature will be more than a predetermined difference from a baselinetemperature.
 9. The device of claim 7, further comprising: a temperaturesensor; wherein the processor-executable instructions further compriseinstructions that causes the processor to: determine, via thetemperature sensor, an actual time when the ambient room temperaturereaches the adjusted desired temperature; determine a time differencebetween the actual time and the altered desired time; and recalculatethe altered start time based on the time difference.
 10. The device ofclaim 9, wherein the processor-executable instructions that causes theprocessor to recalculate the altered start time comprises instructionsthat causes the processor to: adjust the altered start time to a timeearlier than the altered start time when the time difference indicatesthat the actual time was later than the altered desired time.
 11. Thedevice of claim 3, wherein the processor-executable instructions thatcauses the processor to recalculate the altered start time comprisesinstructions that causes the processor to: adjust the altered start timeby a predetermined time for each time period that the actual time waslater than the altered desired time.
 12. The device of claim 11, whereinthe predetermined time is 5 minutes and the time period is 5 minutes.